package com.tom.architect.party5.day38.simple7;

import android.widget.TextView;
import com.tom.architect.R;
import com.tom.architect.party5.day38.simple7.base.BaseMvpActivity;
import com.tom.architect.party5.day38.simple7.inject.InjectPresenter;

/**
 * 实现协议 UserInfoContract.UserInfoView 里面的方法
 * 代码抽离：
 */
public class MainActivity3801
        extends BaseMvpActivity<UserInfoPresenter> // 添加泛型，方便一对一。
        implements UserInfoContract.UserInfoView {
//    @InjectPresenter // 这个注解只能添加到Presenter上面
    private TextView mTvTextResult;

    // 问题：多个Presenter 如何处理？
    // 多Presenter如何处理？可以用Dagger处理，自己写一个注入；
    // 也可以new 新的对象，自己手动attach和detach（太麻烦）。
    @InjectPresenter
    private UserInfoPresenter mPresenter; // 添加IOC注解。随着生命周期走。

    @Override
    public void onLoading() {
        // 加载进度条
    }

    @Override
    public void onError() {
        // 显示错误
    }

    @Override
    public void onSucceed(UserInfo userInfo) {
        // 成功 这个时候 Activity 有可能会被关闭掉，有可能会异常崩溃（一般不会）
        // 1. 可以判断界面还在不在(试一试)
        // 2. 采用解绑（通用）
        mTvTextResult.setText(userInfo.toString());
    }

    @Override
    protected UserInfoPresenter createPresenter() {
        return new UserInfoPresenter();
    }

    @Override
    protected void initData() {
        // 获取用户数据 http://ppw.zmzxd.cn/index.php/api/v1/loginuser
        mPresenter.getUsers("ed6b0f7f34dd8cf7b003e40691457175");
    }

    @Override
    protected void initView() {
        mTvTextResult = findViewById(R.id.text_result);
    }

    @Override
    protected void setContentView() {
        setContentView(R.layout.activity_main3700);
    }

}